import { NextResponse } from 'next/server';
import { getServerSession } from 'next-auth/next';
import { authOptions } from '@/app/api/auth/[...nextauth]/route';
import { api } from '@/lib/apiService';

// 将请求代理到后端 Python 的 /chat 接口，保持流式传输
export async function POST(request) {
  try {
    const session = await getServerSession(authOptions);
    if (!session?.user?.email) {
      return NextResponse.json({ error: '未授权' }, { status: 401 });
    }

    const body = await request.json();

    // 使用服务端带认证的请求；api.auth.post 在检测到流式时会返回 ReadableStream
    const result = await api.auth.post('chat', body, {
      headers: { 'Content-Type': 'application/json' }
    });

    // 如果是流式响应（ReadableStream），直接透传给前端
    if (result && typeof result.getReader === 'function') {
      return new Response(result, {
        status: 200,
        headers: {
          'Content-Type': 'text/plain; charset=utf-8',
          'Transfer-Encoding': 'chunked',
        },
      });
    }

    // 非流式（JSON）
    return NextResponse.json(result);
  } catch (error) {
    const status = /401/.test(String(error?.message)) ? 401 : 500;
    return NextResponse.json(
      { error: error.message || '处理请求时发生错误' },
      { status }
    );
  }
}